An introspection tool allows users, such as system administrators and software developers, to examine the activities of software (e.g., operating system, applications, programs) while the software is executing to help diagnose a performance or functional problem. An introspection tool can include tracing and probing features, for example, to allow a user to examine variables in the software code, and to “hook” into the software code to gather information about the software.
A user can use an introspection tool to create a user introspection script containing functions to examine and monitor software. The script may probe processes for certain events and run custom probe handlers when those events occur. Probe handlers can print tracing output, update global script variables, and/or modify program state.